unit udm;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, variants,  Forms,
  Dialogs, DBTables, DB, ExtCtrls;

type
  Tfdm = class(TDataModule)
    tbestado: TTable;
    tbvendedor: TTable;
    Query1: TQuery;
    Query2: TQuery;
    dsestado: TDataSource;
    dsvendedor: TDataSource;
    dsfatura: TDataSource;
    tbfatura: TTable;
    tbproduto: TTable;
    dsproduto: TDataSource;
    tbfornecedor: TTable;
    tbcliente: TTable;
    dscliente: TDataSource;
    dsquery1: TDataSource;
    dsfornecedor: TDataSource;
    tbpagar: TTable;
    tbreceber: TTable;
    dspagar: TDataSource;
    dsreceber: TDataSource;
    tbagenda: TTable;
    dsagenda: TDataSource;
    Timer1: TTimer;
    tbagenda1: TTable;
    procedure tbestadoAfterPost(DataSet: TDataSet);
    procedure tbestadoBeforeEdit(DataSet: TDataSet);
    procedure tbestadoAfterScroll(DataSet: TDataSet);
    procedure tbvendedorAfterScroll(DataSet: TDataSet);
    procedure tbvendedorBeforeEdit(DataSet: TDataSet);
    procedure tbvendedorPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbestadoPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbfaturaAfterPost(DataSet: TDataSet);
    procedure tbfaturaAfterScroll(DataSet: TDataSet);
    procedure tbfaturaBeforeEdit(DataSet: TDataSet);
    procedure tbfaturaPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbfaturaBeforePost(DataSet: TDataSet);
    procedure tbprodutoAfterScroll(DataSet: TDataSet);
    procedure tbprodutoBeforeEdit(DataSet: TDataSet);
    procedure tbprodutoNewRecord(DataSet: TDataSet);
    procedure tbprodutoPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbclienteAfterScroll(DataSet: TDataSet);
    procedure tbclienteBeforeEdit(DataSet: TDataSet);
    procedure tbclientePostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbfornecedorAfterScroll(DataSet: TDataSet);
    procedure tbclienteAfterPost(DataSet: TDataSet);
    procedure tbprodutoAfterPost(DataSet: TDataSet);
    procedure tbgrupoAfterPost(DataSet: TDataSet);
    procedure tbfornecedorAfterPost(DataSet: TDataSet);
    procedure tbfornecedorBeforeEdit(DataSet: TDataSet);
    procedure tbfornecedorPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbpagarAfterPost(DataSet: TDataSet);
    procedure tbpagarAfterScroll(DataSet: TDataSet);
    procedure tbpagarBeforeEdit(DataSet: TDataSet);
    procedure tbpagarPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbreceberAfterPost(DataSet: TDataSet);
    procedure tbreceberAfterScroll(DataSet: TDataSet);
    procedure tbreceberBeforeEdit(DataSet: TDataSet);
    procedure tbreceberPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure tbpagarNewRecord(DataSet: TDataSet);
    procedure tbreceberNewRecord(DataSet: TDataSet);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fdm: Tfdm;

implementation

uses MMSystem, UEstado, UnitVendedor, UCondPgto, UnitProduto, UnitCliente, UnitMenu,
  UnitFornecedor, Unpagar, ureceber;

{$R *.dfm}

procedure Tfdm.tbestadoAfterPost(DataSet: TDataSet);
begin
        festado.btngravar.enabled := false;
        festado.btncancelar.enabled := false;

end;

procedure Tfdm.tbestadoBeforeEdit(DataSet: TDataSet);
begin
       festado.btnGravar.Enabled:=True;
       festado.btncancelar.enabled := true;
end;

procedure Tfdm.tbestadoAfterScroll(DataSet: TDataSet);
begin

      if fmenu.controle = 'estado' then begin

           festado.btnAvancar.Enabled := True;
            festado.btnUltimo.Enabled := True;
             festado.btnPrimeiro.Enabled := True;
              festado.btnVoltar.Enabled := True;

        if tbestado.Bof then begin
         festado.btnPrimeiro.Enabled := False;
          festado.btnVoltar.Enabled := False;

             end;

        if tbestado.Eof then begin

           festado.btnAvancar.Enabled := False;
            festado.btnUltimo.Enabled := False;
             end;
                  end;


end;

procedure Tfdm.tbvendedorAfterScroll(DataSet: TDataSet);
begin

        if fmenu.controle = 'vendedor' then begin

           fvendedor.btnAvancar.Enabled := True;
            fvendedor.btnUltimo.Enabled := True;
             fvendedor.btnPrimeiro.Enabled := True;
              fvendedor.btnVoltar.Enabled := True;

        if tbvendedor.Bof then begin
         fvendedor.btnPrimeiro.Enabled := False;
          fvendedor.btnVoltar.Enabled := False;

             end;

        if tbvendedor.Eof then begin

           fvendedor.btnAvancar.Enabled := False;
            fvendedor.btnUltimo.Enabled := False;
             end;
              end;

end;

procedure Tfdm.tbvendedorBeforeEdit(DataSet: TDataSet);
begin
        fvendedor.btnGravar.Enabled:=True;
         fvendedor.btncancelar.enabled := true;
end;

procedure Tfdm.tbvendedorPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin

       Messagedlg('Este vendedor já está cadastrado, ou o telefone está sem preencher, verificar !!!',mterror,[mbok],0);
         fvendedor.btncancelarclick(self);
          abort;
end;

procedure Tfdm.tbestadoPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
       
        Messagedlg('Este estado já está cadastrado, ou existem siglas sem preencher, verificar !!!',mterror,[mbok],0);
         festado.btncancelarclick(self);
          abort;

end;

procedure Tfdm.tbfaturaAfterPost(DataSet: TDataSet);
begin
        fcondfatura.btngravar.enabled := false;
        fcondfatura.btncancelar.enabled := false;
end;

procedure Tfdm.tbfaturaAfterScroll(DataSet: TDataSet);
begin

       if fmenu.controle = 'condfatura' then begin

           fcondfatura.btnAvancar.Enabled := True;
            fcondfatura.btnUltimo.Enabled := True;
             fcondfatura.btnPrimeiro.Enabled := True;
              fcondfatura.btnVoltar.Enabled := True;

        if tbfatura.Bof then begin
         fcondfatura.btnPrimeiro.Enabled := False;
          fcondfatura.btnVoltar.Enabled := False;

             end;

        if tbfatura.Eof then begin

           fcondfatura.btnAvancar.Enabled := False;
            fcondfatura.btnUltimo.Enabled := False;
             end;
              end;

end;

procedure Tfdm.tbfaturaBeforeEdit(DataSet: TDataSet);
begin
        fcondfatura.btnGravar.Enabled:=True;
         fcondfatura.btncancelar.enabled := true;
end;

procedure Tfdm.tbfaturaPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin

       Messagedlg('Esta condição já foi cadastrada, verificar !!!',mterror,[mbok],0);
         fcondfatura.btncancelarclick(self);
          abort;

end;

procedure Tfdm.tbfaturaBeforePost(DataSet: TDataSet);
begin
        if fcondfatura.dbedit1.Text = '1' then
         if fcondfatura.editcondpgto.Text = '' then begin
          showmessage('Preencha a (as) Cond. Pgto. ');
           abort;
            end;

        if fcondfatura.dbedit1.Text = '2' then
         if (fcondfatura.editcondpgto.Text = '') or (fcondfatura.editcondpgto2.Text = '') then begin
          showmessage('Preencha a (as) Cond. Pgto. ');
           abort;
            end;

        if fcondfatura.dbedit1.Text = '3' then
         if (fcondfatura.editcondpgto.Text = '') or (fcondfatura.editcondpgto2.Text = '') or (fcondfatura.editcondpgto3.Text = '')then begin
          showmessage('Preencha a (as) Cond. Pgto. ');
           abort;
            end;

        if fcondfatura.dbedit1.Text = '4' then
         if (fcondfatura.editcondpgto.Text = '') or (fcondfatura.editcondpgto2.Text = '') or (fcondfatura.editcondpgto3.Text = '') or (fcondfatura.editcondpgto4.Text = '') then begin
          showmessage('Preencha a (as) Cond. Pgto. ');
           abort;
            end;
end;

procedure Tfdm.tbprodutoAfterScroll(DataSet: TDataSet);
 var
  pt : String;
begin


     if fmenu.controle = 'produto' then begin

     if tbproduto['imagem'] <> null then begin
      pt := tbproduto['imagem'] ;
       if FileExists(pt) then
        fproduto.image1.Picture.LoadFromFile (pt);
        end else
         fproduto.image1.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\imagem\imagem.wmf');

           fproduto.btnAvancarp1.Enabled := True;
            fproduto.btnUltimop1.Enabled := True;
             fproduto.btnPrimeirop1.Enabled := True;
              fproduto.btnVoltarp1.Enabled := True;

        if tbproduto.Bof then begin
         fproduto.btnPrimeirop1.Enabled := False;
          fproduto.btnVoltarp1.Enabled := False;

             end;

        if tbproduto.Eof then begin

           fproduto.btnAvancarp1.Enabled := False;
            fproduto.btnUltimop1.Enabled := False;
             end;
              end;


end;

procedure Tfdm.tbprodutoBeforeEdit(DataSet: TDataSet);
begin
       fproduto.btnGravar1.Enabled:=True;
       fproduto.btncancelar1.enabled := true;
end;

procedure Tfdm.tbprodutoNewRecord(DataSet: TDataSet);
begin
         tbproduto['grupo'] := fproduto.tbgrupo['grupo'];
end;

procedure Tfdm.tbprodutoPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
       Messagedlg('Este produto já está cadastrado, ou existe registro sem preencher, verificar !!!',mterror,[mbok],0);
         fproduto.btncancelar1click(self);
          abort;
end;

procedure Tfdm.tbclienteAfterScroll(DataSet: TDataSet);
begin

         if fmenu.controle = 'cliente' then begin

           fcliente.btnAvancar.Enabled := True;
            fcliente.btnUltimo.Enabled := True;
             fcliente.btnPrimeiro.Enabled := True;
              fcliente.btnVoltar.Enabled := True;

        if tbcliente.Bof then begin
         fcliente.btnPrimeiro.Enabled := False;
          fcliente.btnVoltar.Enabled := False;

             end;

        if tbcliente.Eof then begin

           fcliente.btnAvancar.Enabled := False;
            fcliente.btnUltimo.Enabled := False;
             end;
              end;

end;

procedure Tfdm.tbclienteBeforeEdit(DataSet: TDataSet);
begin
      if fmenu.controle ='cliente' then begin
       fcliente.btnGravar.Enabled:=True;
       fcliente.btncancelar.enabled := true;
       end;
end;

procedure Tfdm.tbclientePostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
        Messagedlg('Este cliente já foi cadastrado, ou existe nome e telefone em branco, verificar',mterror,[mbok],0);
         tbcliente.Cancel;
          abort;
end;

procedure Tfdm.tbfornecedorAfterScroll(DataSet: TDataSet);
begin
        if fmenu.controle = 'fornecedor' then begin

           ffornecedor.btnAvancar.Enabled := True;
            ffornecedor.btnUltimo.Enabled := True;
             ffornecedor.btnPrimeiro.Enabled := True;
              ffornecedor.btnVoltar.Enabled := True;

        if tbfornecedor.Bof then begin
         ffornecedor.btnPrimeiro.Enabled := False;
          ffornecedor.btnVoltar.Enabled := False;

             end;

        if tbfornecedor.Eof then begin

           ffornecedor.btnAvancar.Enabled := False;
            ffornecedor.btnUltimo.Enabled := False;
             end;


         end;
end;

procedure Tfdm.tbclienteAfterPost(DataSet: TDataSet);
begin
        if fmenu.controle ='cliente' then begin
        fcliente.btngravar.enabled := false;
        fcliente.btncancelar.enabled := false;
        end;
end;

procedure Tfdm.tbprodutoAfterPost(DataSet: TDataSet);
begin
        fproduto.btngravar1.enabled := false;
        fproduto.btncancelar1.enabled := false;
end;

procedure Tfdm.tbgrupoAfterPost(DataSet: TDataSet);
begin
        fproduto.btngravarp.enabled := false;
        fproduto.btncancelarp.enabled := false;
end;

procedure Tfdm.tbfornecedorAfterPost(DataSet: TDataSet);
begin
        if fmenu.controle ='fornecedor' then begin

        ffornecedor.btngravar.enabled := false;
        ffornecedor.btncancelar.enabled := false;
        end;
end;

procedure Tfdm.tbfornecedorBeforeEdit(DataSet: TDataSet);
begin

       if fmenu.controle ='fornecedor' then begin
       ffornecedor.btnGravar.Enabled:=True;
       ffornecedor.btncancelar.enabled := true;
       end;
end;

procedure Tfdm.tbfornecedorPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
        Messagedlg('Este fornecedor já foi cadastrado, ou existe  nome fantasia em branco, verificar',mterror,[mbok],0);
         tbfornecedor.Cancel;
          abort;
end;

procedure Tfdm.tbpagarAfterPost(DataSet: TDataSet);
begin
        if fmenu.controle ='pagar' then begin
        fpagar.btngravar.enabled := false;
        fpagar.btncancelar.enabled := false;
        end;
end;

procedure Tfdm.tbpagarAfterScroll(DataSet: TDataSet);
begin
         if fmenu.controle = 'pagar' then begin

           fpagar.btnAvancar.Enabled := True;
            fpagar.btnUltimo.Enabled := True;
             fpagar.btnPrimeiro.Enabled := True;
              fpagar.btnVoltar.Enabled := True;

        if tbpagar.Bof then begin
         fpagar.btnPrimeiro.Enabled := False;
          fpagar.btnVoltar.Enabled := False;

             end;

        if tbpagar.Eof then begin

           fpagar.btnAvancar.Enabled := False;
            fpagar.btnUltimo.Enabled := False;
             end;
              end;

end;

procedure Tfdm.tbpagarBeforeEdit(DataSet: TDataSet);
begin
      if fmenu.controle ='pagar' then begin
       fpagar.btnGravar.Enabled:=True;
       fpagar.btncancelar.enabled := true;
       end;
end;

procedure Tfdm.tbpagarPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
        Messagedlg('Esta duplicata está repetida, ou existe campo (duplicata) em branco, verificar',mterror,[mbok],0);
         tbpagar.Cancel;
          abort;

end;

procedure Tfdm.tbreceberAfterPost(DataSet: TDataSet);
begin
        if fmenu.controle ='receber' then begin
        freceber.btngravar.enabled := false;
        freceber.btncancelar.enabled := false;
        end;
end;

procedure Tfdm.tbreceberAfterScroll(DataSet: TDataSet);
begin
         if fmenu.controle = 'receber' then begin

           freceber.btnAvancar.Enabled := True;
            freceber.btnUltimo.Enabled := True;
             freceber.btnPrimeiro.Enabled := True;
              freceber.btnVoltar.Enabled := True;

        if tbreceber.Bof then begin
         freceber.btnPrimeiro.Enabled := False;
          freceber.btnVoltar.Enabled := False;

             end;

        if tbreceber.Eof then begin

           freceber.btnAvancar.Enabled := False;
            freceber.btnUltimo.Enabled := False;
             end;
              end;

end;

procedure Tfdm.tbreceberBeforeEdit(DataSet: TDataSet);
begin
      if fmenu.controle ='receber' then begin
       freceber.btnGravar.Enabled:=True;
       freceber.btncancelar.enabled := true;
       end;

end;

procedure Tfdm.tbreceberPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
        Messagedlg('Esta duplicata está repetida, ou existe campo (duplicata) em branco, verificar',mterror,[mbok],0);
         tbreceber.Cancel;
          abort;
end;

procedure Tfdm.tbpagarNewRecord(DataSet: TDataSet);
begin
     tbpagar['tipoconta'] := 'DUPLICATA';
end;

procedure Tfdm.tbreceberNewRecord(DataSet: TDataSet);
begin
     tbreceber['tipoconta'] := 'DUPLICATA';
end;

procedure Tfdm.Timer1Timer(Sender: TObject);
var
st, st1:string;
begin

        tbagenda1.open;
        tbagenda1.DisableControls;
        tbagenda1.First;

        while not tbagenda1.Eof do begin

        if tbagenda1['hora']<> null then begin
        st := formatdatetime('hh:mm',tbagenda1['hora']);
        st1 := formatdatetime('hh:mm',time);

        if (tbagenda1['data'] = date) and (st = st1) then begin
         PlaySound (pchar(extractfilepath(paramstr(0)) + '\imagem\Notify.wav'), 0, snd_Async);
          application.MessageBox(pchar(datetimetostr(now) + '  -   ' +  (tbagenda1.FieldByName('nome').asstring) + '  - '+
          (tbagenda1.FieldByName('assunto').asstring)), 'COMPROMISSO - AGENDA',mb_OK + MB_ICONwarning );
            end;
             end;
        tbagenda1.Next;
        end;

        tbagenda1.close;
end;

end.
